<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        // 函数返回值的作用   return  2个
        // 形参和实参   函数声明和函数调用
        //    形参 -> 局部变量


        // 数据类型？
        //   基本类型   number string boolean  null  undefined
        //   引用类型   object(function array)

        // 基本类型和引用类型的区别
        //   基本类型  值存在栈   变量存储的就是值
        //   引用类型  值存在堆   变量存储的是地址

        // 数组的深复制和浅复制
        //   浅复制   就是复制地址   var brr = arr ;   // 
        //   深复制   就是复制值     遍历值  /  slice()

        // 函数的值传递和引用传递   fn(a)  把a存的值传入函数   a如果是基本类型，就是把值传入函数  如果a是引用类型，就是把地址传入了函数(地址共享，函数内有可能会改变) 



        // var a = 1 ;   // 全局变量

        // function f(m) {     // 形参本质是局部变量  相当于var a    用于接收实参  a = a   
        //     // var b ;      // 函数内部有变量a   外面也有变量a
        //     m++             // 优先使用自己的 
        // }

        // f(a) ;        // 把这个变量的值传入到了函数

        // console.log(a);  // 1      // 使用的是全局变量a




        // var arr = [1,2,3] ;    // 全局变量

        // function ff(brr){     // 形参   局部变量   var arr ;    arr = arr ;    // 浅复制 --- 地址   局部变量arr和全局变量arr共享了地址
        //     brr.push(5) ;
        // }

        // ff(arr) ;

        // console.log(arr);   // [1,2,3,5]




        // 实现数组的去重，但是不改变原数组   放新数组中

        // 实现数组的排序，但是不改变原数组

        // function selectSort(arr) {
        //     // 搞一个新的数组
        //     var arr2 = [] ;
        //     // 实现深复制
        //     arr2 = arr.slice() ;

        //     console.log(arr2);

        //     // 找到最小值   放在第一个
        //     // 找到最小值   放在第二个
        //     // 。。。  length - 1   轮
        //     for(var i = 0 ; i < arr2.length - 1 ; i++) {    // 比较的轮数
        //         // 假设  
        //         var min = i ;
        //         for(var j = i + 1 ; j < arr2.length ; j++) {
        //             if(arr[min] > arr[j]) {
        //                 min = j ;
        //             }
        //         }

        //         // 假设第一个位置上的值最小，有可能真的就是最小   就不需要交换
        //         if(min !== i) {
        //             // 交换  min 和 i
        //             var temp = arr[min] ;
        //             arr[min] = arr[i] ;
        //             arr[i] = temp ;
        //         }
        //     }

        //     return arr2
        // }


        // var arr = [3,1,7,5,0] ;
        // selectSort(arr) ;




        // 选择排序方法2
        // [3,1,7,5,0] 
        //   找到最小值   push到新数组   最小值删除
        //   找最小值     push到新数组   最小值删除


        // var arr = [3, 1, 7, 5, 0];
        // var arr2 = [];

        // // // 第一轮
        // var min = 0 ;
        // for(var i = 1 ; i < arr.length ; i++) {
        //     if(arr[min] > arr[i]) {
        //         min = i ;
        //     }
        // }

        // arr2.push(arr[min]) ;

        // console.log(arr2);

        // arr.splice(min , 1) ;

        // console.log(arr);    // [3,1,7,5]



        // // // 第二轮
        // var min = 0 ;
        // for(var i = 1 ; i < arr.length ; i++) {
        //     if(arr[min] > arr[i]) {
        //         min = i ;
        //     }
        // }

        // arr2.push(arr[min]) ;

        // console.log(arr2);  // [0,1]

        // arr.splice(min , 1) ;

        // console.log(arr);    // [3,7,5]


        // // // 第三轮
        // var min = 0 ;
        // for(var i = 1 ; i < arr.length ; i++) {
        //     if(arr[min] > arr[i]) {
        //         min = i ;
        //     }
        // }

        // arr2.push(arr[min]) ;

        // console.log(arr2);   // [0,1,3]

        // arr.splice(min , 1) ;

        // console.log(arr);  //  [7,5]


        // // // 第四轮
        // var min = 0 ;
        // for(var i = 1 ; i < arr.length ; i++) {
        //     if(arr[min] > arr[i]) {
        //         min = i ;
        //     }
        // }

        // arr2.push(arr[min]) ;

        // console.log(arr2);   // [0,1,3,5]

        // arr.splice(min , 1) ;

        // console.log(arr);  // 


        // // 第五轮
        // var min = 0 ;
        // for(var i = 1 ; i < arr.length ; i++) {
        //     if(arr[min] > arr[i]) {
        //         min = i ;
        //     }
        // }

        // arr2.push(arr[min]) ;

        // console.log(arr2);   // [0,1,3,5]

        // arr.splice(min , 1) ;

        // console.log(arr);  // 







        var arr = [3, 1, 7, 5, 0];

        var arr2 = [];

        var len = arr.length ;   // 在删除的过程中，数组的长度发生了改变

        for (var j = 0; j < len; j++) {   // 比较的轮数
            var min = 0;
            for (var i = 1; i < arr.length; i++) {
                if (arr[min] > arr[i]) {
                    min = i;
                }
            }

            arr2.push(arr[min]);

            // console.log(arr2);

            arr.splice(min, 1);

            // console.log(arr);
        }

        console.log(arr2);


    </script>

</body>

</html>